import Vue from 'vue'
import App from './App'

import store from './store'
import uni_request from './common/uni_request.js'
import {BASE_URL, ST_TOKEN} from "./constants/index"
// import {BASE_URL_PRO, ST_TOKEN} from "./constants/index"

const request = uni_request({ // 有效配置项只有三个
  baseURL: BASE_URL, //baseURL
  // timeout: 60*1000, // 超时时间，单位毫秒。默认 60 秒
  header: { 'Content-Type': 'application/x-www-form-urlencoded' }, // 设置请求头，建议放在请求拦截器中
  statusCode: [200, 401] // 服务器相应状态码为 200/401 时，网络请求不会 reject。也就是不会被 catch 到。如响应 401 时可以在响应拦截后 await 刷新 token + await 重新请求 + return response。即可实现无痛刷新。
})
// 请求拦截器
request.interceptors.request.use(async (config, ...args) => {
	if (!BASE_URL) return;
  // await new Promise(resolve => setTimeout(() => resolve(), 3000))
  // console.log('请求拦截器, 网络请求会等 3 秒后上面的异步任务结束后执行') // args[0] method args[1] url args[3] data
  uni.showNavigationBarLoading();
  if (args[1] !== '/app/member/login' && args[1] !== '/app/member/register') {
    config.header[ST_TOKEN] = uni.getStorageSync(ST_TOKEN) // 修改请求头
  }
  // config.body.test = 'test' // 修改请求体
  // config.cancel = true // 取消请求
  return config
})
// 响应拦截器
request.interceptors.response.use((response, ...args) => { // 响应拦截器（可以设置多个, 同时可以也可以使用异步方法）
  const { data: res } = response; // args[0] method args[1] url args[3] data
  // await new Promise(resolve => setTimeout(() => resolve(), 3000));
  uni.hideNavigationBarLoading();
  if (res.retcode === 401) {
    // uni.clearStorageSync();
    uni.removeStorageSync(ST_TOKEN)
    uni.reLaunch({
      url: '/pages/login'
    })
  }
  return response
});
Vue.prototype.$request = request
Vue.config.productionTip = false
Vue.prototype.$store = store
Vue.prototype.$backgroundAudioData = {
	playing: false,
	playTime: 0,
	formatedPlayTime: '00:00:00'
}
Vue.prototype.$adpid = "1111111111"
App.mpType = 'app'
const app = new Vue({
	store,
	...App
});
app.$mount();